package tree;

/**
 * @author : Rookie
 * @description : 二叉树的最小深度
 * @date : 2023/10/11
 */
public class MinDepthOfBinaryTree {

    public static void main(String[] args) {
        int[] input = {1, -1, 2, -1, -1, 4, -1};
        TreeNode root = BinaryTreeUtil.buildTree(input);
        System.out.println("二叉树的最小深度是：" + getMinDepth(root));
    }

    private static int getMinDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        int leftDepth = getMinDepth(root.left);
        int rightDepth = getMinDepth(root.right);
        // 左子树不为空 右子树为空
        if (root.left != null && root.right == null) {
            return 1+ leftDepth;
        }
        if (root.left == null && root.right != null) {
            return 1+rightDepth;
        }
        return 1+Math.min(leftDepth,rightDepth);
    }
}
